В игру Камень, Ножницы, Бумага играют двое. Каждый игрок на
счет три одновременно выбирает один из трех предметов. Игра длится определенное
наперед установленное количество раундов. Игрок, который выиграет большую часть
раундов, объявляется победителем. По заданному количеству раундов и их исходам
следует определить победителя.
Следующие правила описывают правила победы:
·
Камень всегда
побеждает Ножницы (Камень раздавливает Ножницы)
·
Ножницы всегда
побеждают Бумагу (Ножницы режут Бумагу)
·
Бумага всегда бьет Камень (Бумага покрывает Камень)
Вход. Первая строка
содержит количество тестов t (0 < t < 1000). Первая строка каждого
теста содержит количество раундов n
(0 < n < 100), сыгранных в игру
Камень, Ножницы, Бумага. Каждая из следующих n строк содержит одну из заглавных букв R (Камень), P (Бумага) или
S (Ножницы), пробел и снова заглавную букву R, P или S. Первая буква обозначает
выбор первого игрока, вторая буква – выбор второго игрока.
Выход. Для каждого
теста в отдельной строке вывести имя победителя (Player 1 или Player 2). Если
игра заканчивается вничью, вывести TIE.
Пример входа |
Пример выхода |
3 2 R P S R 3 P P R S S R 1 P R |
Player
2 TIE Player
1 |
РЕШЕНИЕ
вычисления
Анализ алгоритма
Для каждого
теста следует подсчитать, сколько раз выиграет первый и сколько раз выиграет
второй игрок. Затем эти значения сравнить.
Реализация алгоритма
Читаем входные
данные.
scanf("%d",&tests);
while(tests--)
{
scanf("%d\n",&n);
Количество побед первого win1 и второго win2
игрока устанавливаем равным нулю.
win1 = win2 = 0;
for(i = 0; i
< n; i++)
{
Читаем результат одного раунда игры и присуждаем победу
первому или второму игроку. Результатом одного раунда не может быть ничья.
scanf("%c
%c\n",&a,&b);
if ((a == 'R') && (b == 'S'))
win1++;
if ((a == 'S') && (b == 'R'))
win2++;
if ((a == 'S') && (b == 'P'))
win1++;
if ((a == 'P') && (b == 'S'))
win2++;
if ((a == 'P') && (b == 'R'))
win1++;
if ((a == 'R') && (b == 'P'))
win2++;
}
Выводим результат.
if (win1 >
win2)
printf("Player
1\n");
else
if (win1 <
win2)
printf("Player
2\n");
else
printf("TIE\n");
}
Java реализация
import java.util.*;
//import java.io.*;
public class Main
{
public static void main(String[] args) //throws IOException
{
Scanner con = new Scanner(System.in);
//Scanner con = new Scanner(new
FileReader ("1215.in"));
int tests = con.nextInt();
while(tests--
> 0)
{
int win1 = 0, win2 = 0;
int n = con.nextInt();
for(int i = 0; i < n; i++)
{
char a = con.next().charAt(0);
char b = con.next().charAt(0);
if ((a == 'R') && (b == 'S')) win1++;
if ((a == 'S') && (b == 'R')) win2++;
if ((a == 'S') && (b == 'P')) win1++;
if ((a == 'P') && (b == 'S')) win2++;
if ((a == 'P') && (b == 'R')) win1++;
if ((a == 'R') && (b == 'P')) win2++;
}
if (win1 > win2)
System.out.println("Player 1");
else
if (win1 < win2)
System.out.println("Player 2");
else
System.out.println("TIE");
}
con.close();
}
}